Skip to content

Screen Session automatisch beim booten starten

Ich möchte gern, dass eine vorhandene Screen Session nach dem booten des Servers automatisch wieder gestartet wird. In meinem Beispiel ist es mkdocs in einer Screensession laufen zu lassen. Ich habe mir dazu ein Skript screenstarter.sh geschrieben, welches die Konfiguration /etc/screenstarter.ini auswertet und alle dort definierten Screen Session und deren Befehle unter den jeweiligen Benutzer startet und beim herunterfahren wieder beendet.

Das Skript kann man sich als Debian Package für Debian & Ubuntu installieren.

Um mein Debian/Ubuntu Repository einzubinden, sichern wir zuerst den GPG Key von mein Deb Repository wie folgt.

wget -O - https://deb.tuxnet24.de/gpg.key | \
    sudo tee /etc/apt/trusted.gpg.d/tuxnet24.asc >/dev/null

Dann fügen wir mit folgenden Befehl die Repository Quellen den Sources hinzu.

echo \
    "deb [trusted=yes signed-by=/etc/apt/trusted.gpg.d/tuxnet24.asc] https://deb.tuxnet24.de/debian\
 $(lsb_release -cs 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/tuxnet24.list >/dev/null

Nun aktualisieren wir die Paketquellen und installieren das Paket screenstarter.

sudo apt update
sudo apt install screenstarter

Jetzt konfigurieren wir die Screen Session die unter den jeweiligen Benutzer gestartet werden soll. Eine Section wird in Eckigen Klammern definiert, was mit dem Benutzer gleichgesetzt ist unter dem die Session gestartet werden soll. Innerhalb der Section werden als Key/Value Paare, getrennt durch einen = Zeichen der Session Name (Key) und der Befehl der ausgeführt werden soll (Value) definiert. In der Konfigurationsdatei /etc/screenstarter.ini ist ein Beispiel zu finden.

In meinem Beispiel wird für den Benutzer tux eine Screen Session mit dem Namen wiki gestartet und dabei der Befehl cd ~/wiki/ && mkdocs serve ausgeführt.

sudo vi /etc/screenstarter.ini
....
[tux]
wiki = cd ~/wiki/ && mkdocs serve

Nachdem wir nun das Paket screenstarter installiert und konfiguriert haben, reloaden wir den SystemV Daemon, aktivieren den Service screenstarter.service und starten diesen.

systemctl daemon-reload
systemctl enable screenstarter && systemctl start screenstarter